package com.aaa.mapper;

import com.aaa.entity.Role;
import com.aaa.entity.Staff;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;


public interface StaffMapper {
    /**
     * 登录SQL
     *
     * @param sname 用户名
     * @return 返回结果
     */
    @Select("select * from hotels.staff where sname=#{sname};")
    Staff login(String sname);

    /**
     * 查询全部员工信息SQL
     *
     * @return
     */
    List<Staff> query(String phone);

    List<Role> findRoleByRid();


    /**
     * 查询重复数据
     *
     * @param phone
     * @param idcard
     * @return
     */
    List<Map<String, Object>> findAll(Integer id, String sname, String phone, String idcard);

    /**
     * 插入员工信息
     *
     * @return
     */
    @Insert("insert into hotels.staff(sname, phone, idcard, sex, pswd, state) values (#{sname},#{phone},#{idcard},#{sex},#{pswd},#{state});")
    Integer addStaff(String sname, String phone, String idcard, String sex, String pswd, String state);


    /**
     * 重置员工密码
     *
     * @param pswd 密码对象
     * @return 返回结果
     */
    @Update("update hotels.staff set pswd  = #{pswd} where staff.id=#{id} ;")
    Integer updStaffPswd(Integer id, String pswd);

    /**
     * 修改数据SQL
     *
     * @param id     根据id
     * @param sname  员工名
     * @param phone  手机号
     * @param idcard 身份账号
     * @param sex    性别
     * @return 返回数据
     */
    @Update("update hotels.staff set sname=#{sname},phone  =#{phone},idcard=#{idcard},sex=#{sex}  where id=#{id}   ;")
    Integer uodateStaff1(Integer id, String sname, String phone, String idcard, String sex);

    /**
     * 修改状态SQL
     *
     * @param id    根据 id
     * @param state
     * @return 影响条数
     */
    @Update("update hotels.staff set state  = if(#{state}='禁用','正常','禁用') where id=#{id} and state=#{state}")
    Integer updateState(Integer id, String state);

    /**
     * 查询SQL
     *
     * @param id 根据主键id
     * @return 查询结果
     */
    @Select("select * from staff where id=#{id}")
    Staff findById(Integer id);

    @Update("update hotels.staff set staff.pswd = #{pswd} where staff.sname=#{sname} ;")
    Integer edit(@Param("sname") String sname,@Param("pswd") String pswd);
}
